# coding:utf-8

# capitalize 用法
# 将字符串首字母大写
name = 'yeskip'
new_name = name.capitalize()
print(new_name)  # Yeskip

"""
只对第一个字母有效
只对字母有效
已经是大写，则无效
"""
name = 'xiao mu'
info = 'hello 小慕'
_info = '小慕'
print(name.capitalize())
print(info.capitalize())
print(_info.capitalize())  # 无效

# casefold(支持更多小语种的支持) and lower(只支持英文变小写)
# 只对字符串中的字母有效
# 如果已经是小写，无效
name = 'DEWEI'
new_name = name.casefold()
print(new_name)
new_name = name.lower()
print(new_name)

name = 'yuanpengyue'
# upper() 全体大写
print('名字变大写', name.upper())

# swapcase() 大小写切换
print(name.swapcase())

# zfill
# 位数不够会在前面填充0
print(name.zfill(12))

# count
# 如果查询的元素不存在，则返回0
print(name.count('p'))

# startswith() endswith()
print(name.startswith('yu', 2, -1))
print(name.endswith('yu'))

# find index
# 如果find找不到元素，会返回-1
# index找不到元素，会导致程序报错
print('pe在name的索引: ', name.find('pe', 0, -1))
print('pe在name的索引: ', name.index('pe', 0, -1))

# strip函数
content = ' python 很容易学习的哦 '
print(content.strip())
print(content.lstrip())
print(content.rstrip())

# replace 替换
print(name.replace('pe', 'ep'))
print(name.replace('e', 'x', 1))

# isspace istitle isupper islower
"""
istitle 标题类型：字符串中的每个单词首字母大写
isupper 判断字符串的字母是否都是大写
islower 判断字符串的字母是否都是小写
"""
# join split
# 后续学习
print('  '.isspace())
print('hello yeskip'.isspace())
print('是否是标题类型', 'Hello World !'.istitle())
print('my name is lower'.islower())
print('COMMON_NUMBER'.isupper())

# 编码格式
"""
gbk中文编码
ascii英文编码

英文编码格式不支持中文的
通用编码格式:utf-8
# coding:ascii
# coding:utf-8
"""

# 格式化
"""
发送邮件的时候
发送短信的时候
App上发推送的时候
"""
# %格式化方式
print('my name is %s, my age is %s' % ('dewei', 33))
print('my name is %s, my age is %d' % ('dewei', 33))
print('my name is %s, my age is %f' % ('dewei', 33))
print('my name is %s, my age is %.1f' % ('dewei', 33))

# 使用string.format()格式化字符串 {}
print('hello {0}, 今天天气看起来{1}'.format('xiaomu', '不错'))
print('hello {}, 今天天气看起来{}'.format('xiaomu', '不错'))

# f""格式化
name_01 = 'yuan'
age_01 = 25
info_01 = f'my name is {name_01}, my age is {age_01}'
print(info_01)

# 格式化符号
"""
%s 格式化字符串
%d 格式化整型
%f 格式化浮点型
%u 格式化无符号整型(正整数)
%c 格式化字符
%o 格式化八进制数
%x 格式化十六进制
%e 科学记数法格式化浮点数
"""
print('%c' % 97)
print('%c' % 35555)
print('%u' % 25)
print('%.4f' % 12.5)

print('%o' % 7)  # 7
print('%o' % 10)  # 12
print('%o' % 16)  # 20
print('%x' % 16)  # 10
print('%x' % 20)  # 14
print('%e' % 3.14256)

# 转义字符
info = ('my name \nis dewei')
print(info)
# \b 删除
# \r 不仅换行，还会删去内容
# \f 多一个空行
## 转义无效符
# 在python中字符串前加r来将当前字符串的转义字符无效化
print('hello \f')
print(r'hello \f')